1. Field of the Invention
This invention is related to the field of digital communications and, more particularly, to the arbitration of communications in multiple domains.
2. Description of the Related Art
In the field of data communications, it is common to create communication networks among various devices in order to allow communication between those devices. It is also common to structure such networks such that certain devices may communicate with some devices, but not others. For example, an enterprise network may include a server which is configured with several processors for servicing the needs of a bank. The bank being serviced may have a production community which includes persons who are involved in the day to day workings of the bank. In addition, a bank may have a development community which includes persons working to develop and test new banking computer applications. Further, a bank may have a public web site which allows Internet users to obtain information or services related to the bank. Each of these user communities requires access to different sets of data which in some cases may be mutually exclusive.
In an enterprise network, some computing resources may be dedicated to users of a single community, and others may be shared among users of multiple communities. By partitioning resources, different domains may be created which provide for separation of these communities. Generally, communications within one domain are not visible to another domain. One purpose for using domains is to provide isolation. By isolating domains from one another, problems within one domain may be prevented from affecting other domains. Single domain devices are devices (e.g., processors, computers, networking equipment, etc.) processing information on behalf of users or processes in a single domain. However, in some cases, such as due to cost or technical constraints, it may be necessary or desirable to use a single device to serve multiple domains. Multi-domain devices are devices processing information on behalf of users or processes in more than one domain.
FIG. 1 is an illustration of one embodiment of a communication network 100. Included in FIG. 1 are nodes 101, 102, 103, 104, 105 and 106 coupled to a switch 110. Switch 110 is configured to route information between nodes 101, 102, 103, 104, 105 and 106. Each of nodes 101, 102, 103, 104, 105 and 106 may comprise one or more processors, workstations, networks, or other computing resources. Consequently, communication network 100 may comprise a single board with multiple processors, a local area network, or otherwise. In the embodiment of FIG. 1, resources have been partitioned to create four domains, A, B, C and D. Domain A 120 includes nodes 101 and 106. Domain B 130 includes nodes 101, 103 and 104. Domain C 140 includes nodes 102 and 103. Domain D includes node 105. In general, all communications broadcast within a domain are visible to all members of that domain and not visible to members outside that domain. In general, a domain is a group of clients which operate as a logical computer system. Consequently, all communications broadcast by node 101 within domain A 120 are visible to nodes 101 and 106, and vice-versa. Similarly, all communications broadcast by node 104 within domain B 130 are visible to nodes 101, 103 and 104. However, because node 106 is part of domain A 120 and node 104 is part of domain B 130, broadcasts from either of nodes 104 or 106 are not visible to the other. Further, because node 105 is the only member of domain D 150, broadcasts by node 105 within domain D 150 are only visible to node 105. Consequently, nodes 102, 104, 105 and 106 may be considered single-domain nodes and nodes 101 and 103 may be considered multi-domain nodes. In addition, because switch 110 is coupled to domain A 120, domain B 130, domain C 140, and domain D 150, switch 110 may be considered a multi-domain device.
Turning now to FIG. 2, one embodiment of switch 110 is shown. Included in the exemplary embodiment shown are queues 202, 204, 206 and 208 which are configured to store data received from nodes 101, 102, 103, 104, 105 and 106. Queue 202 includes entries 202A–202C, queue 204 includes entries 204A–204C, queue 206 includes entries 206A–206C, and queue 208 includes entries 208A–208C. Elements referred to herein with a particular reference number followed by a letter will be collectively referred to by the reference number alone. For example, queue entries 202A–202C will be collectively referred to as queue 202. While four queues are shown in the embodiment, any suitable type and number of storage device may be utilized. Also included in switch 110, are output ports 212, 214, 216, 218, 220 and 222. Port 212 is configured to convey data to domain A 120, port 214 is configured to convey data to domain B 130, port 216 is configured to convey data to domain C 140, port 218 is configured to convey data to domains A 120 and B 130, port 220 is configured to convey data to domains B 130 and C 140, and port 222 is configured to convey data to domain D.
In the example of FIG. 2, queue entry 202A contains data which is destined for domain A 120, queue entry 204A contains data destined for domain B 130, queue entry 206A contains data which is destined for domain C 130, and queue entry 208A contains data which is destined for domain D 150. In the configuration shown, each of queues 202–208 may convey data to one or more of ports 212–222 at the same time. Further, each of ports 212–222 is configured to convey data irrespective of whether or not another of ports 212–220 is presently conveying data. Consequently, each of ports 212–220 is configured to convey data simultaneously.
Because switch 110 is a multi-domain device, certain limitations must be imposed on what data may be transmitted by ports 212–220 at the same time. Generally speaking, For example, data in queue entry 202A is destined for domain A 120 and will be conveyed via ports 212 and 218. Also, data in queue entry 204A is destined for domain B 130 and will be conveyed via ports 214 and 218. However, because port 218 conveys data for both domains A 120 and B 130, data destined for domains A 120 and B 130 may not be conveyed simultaneously. Consequently, data destined for domain A 120 should be serialized with data destined for domain B 130. Similarly, port 220 is configured to convey data to domains B 130 and C 140. Consequently, data destined for domain B 130 should be serialized with data destined for domain C 140. However, because data destined for domain B 130 should also be serialized with data destined for domain A 120, data for domain C 140 should be serialized with data destined for domain A 120 as well. Finally, data destined for domain D 150 need not be serialized with data destined for other domains and may be conveyed concurrently with other transaction data.
Generally speaking, in order to ensure correct operation and ordering of transactions, all nodes within a domain should see broadcasts within the domain at the same time. Alternatively, all nodes within a domain should see all broadcasts within the domain in the same order. For example, if two transactions A and B are broadcast within a domain, then all nodes in the domain should see the transactions in the same order. To ensure data is delivered to domains in the appropriate order, multi-domain switch 110 may be configured to serialize transmission of all data by only conveying data from a single queue on a given cycle. For example, data may be conveyed in a serial manner by first conveying data from queue 202, then queue 204, then queue 206, then queue 208. However, because such a serialization approach does not account for data which may be conveyed concurrently, the overall effective bandwidth of the switch 110 may be reduced and system performance may be dramatically reduced.
What is desired is a method and mechanism for identifying and arbitrating amongst data which require an ordered relationship.